- Changed the message in the docs about the screensaver under Vista, it works if
User Account Control is turned off.
- Bugfix in "-a 3" (fast optimize). It would not use Perfect Fit for gaps that were
larger than all the data already processed.
- Buffix in "-a 6" (move to end of disk). Files in zone 1 would not be moved.
- Added some translations of "Program Files" to the build-in list of SpaceHogs:
Archivos de programa Spanish
Arquivos de programas Brazilian Portuguese
Ohjelmatiedostot Finnish
Program Files All others
Program Swedish
Programas Portuguese
ProgramFiler Norwegian
Programme German
Programmer Danish
Programmes French
Programmi Italian
- Fixed a typo in the "System Volume Information" string in the SpaceHogs.
- Fixed the displaying of the zone number, should have been + 1.
For programmers:
- Changed the "makefile.bat" script, "JkDefrag.exe" does not need to be linked
with "JkDefragScreenSaver.res".
JkDefrag v3.15 (June 14, 2007)
Changes:
- Added extra breakpoints so the program will quit faster.
- Added special exception for Acronis OS Selector files.
- Changes to facilitate Delphi programmers. All callbacks are now CDECL.
- Added a Pascal example program.
JkDefrag v3.14 (June 9, 2007)
Changes:
- Bugfix for the "-u" commandline option. All the "-u" masks were accidentally
also processed as "items".
- Files are now classed as a SpaceHog when their last access time is more than
30 days ago.
- Deleted the "full" optimization ("-a 4"). For backward compatibility the
program still accepts the option, but does exactly the same as for "-a 3".
- The screensaver will now not start if it detects that the computer is running
on battery power.
- Deleted the code that disables the Windows display idle timer (screen saver) and
system idle timer (power saver) in the commandline and screensaver versions.
For programmers:
- Deleted message 57 from the message array.
- Changed the meaning of the "Data->Phase" variable used by the ShowStatus()
callback.
- The ShowStatus() callback is now executed once for every zone in the "-a 3"
and "-a 7"..."-a 11" optimizations.
JkDefrag v3.13
- Version number skipped for superstitious reasons.
JkDefrag v3.12 (June 6, 2007)
Changes:
- Bugfix for the X64 versions.
JkDefrag v3.11 (June 5, 2007)
Changes:
- Fixed a bug that caused files to be classified in the wrong zone, causing
several problems.
- Fixed a bug where the list of files was not cleared between disks.
- Re-applied "The versions now also detect if another version is running"
change from v3.9 that was accidentaly deleted in version 3.10.
- Reduced the size where huge files are treated in segments to 1Gb, in a further
attempt to work around a suspected bug in the Microsoft defragmentation api.
For programmers:
- Added strings 48...57 to the array of textstrings.
JkDefrag v3.10 (June 4, 2007)
Changes:
- Bugfix for infinite loop in "Phase 2: Fixup"
JkDefrag v3.9 (May 30, 2007)
Changes:
- Added optimization methods for sorting files on disk by name, size, last
access, last change, and creation time.
- Reduced the number of steps from 6 to 3.
- Added zoning to the Fast and Full optimization methods. Files are now placed
in 3 zones with a free space between: directories, regular files, and space hogs.
- Added "-u" commandline option to add custom masks to the list of build-in
SpaceHogs masks.
- Added a top-25 of largest files to the status report.
- Huge files (>4Gb) are now treated in segments.
- The versions now also detect if another version is running (windows,
command line, screen saver).
- The Windows display idle timer (screen saver) and system idle timer (power saver)
are disabled while JkDefrag is running.
For programmers:
- Many changes in the sources.
- Added an example Visual project.
- Library sources are now compatible with the UNICODE compiler setting.
- Changes to facilitate multithreading.
- Renamed the sources. There is now a JkDefrag.cpp and JkDefrag.h file for easy
inclusion into a project.
- Integrated the DefragInitialize function into the RunDefrag function.
- Changed the StopProcessing subroutine, it now accepts a timeout.
JkDefrag v3.8 (April 20, 2007)
Changes:
- Fix for the "infinite worm" problem in the full optimization.
- Added "-q" commandline option to the Windows version to exit the program when
it has finished.
- Changed the "-e" exclude option to support multiple wildcards. Previously
a matching subdirectory would be skipped, now all files in those directories
will be scanned.
- Changed the "-e" exclude option to support the excluding of complete disks.
- Fixed a problem in the screensaver that prevented it from finding alternate
screensavers in the Windows directory.
- Added special exception for the "bcldr.bin" file used by the BestCrypt software
by "http://www.jetico.com/".
- Fixed a buffer size calculation in the AnalyzeVolume subroutine. It allocated
too much memory.
- Enlarged a buffer for writing to the logfile. Very long filenames could result
in an empty message.
- For library developers: added error message 47.
JkDefrag v3.7 (Feb 24, 2007)
Changes:
- Commandline options are now accepted with and without a space between the
option and the value, for example "-a3" and "-a 3".
- New "-e" commandline option to exclude files/directories.
- New "-f" commandline option to specify a size for the free area.
- New optimization method 6: Analyze, defragment, and move to end of disk.
- New setting in the screensaver for the status bar not to display filenames
or not to display the status bar altogether.
- The logfile now shows a list of files in the status report that could not be
moved, and a list of files that are (still) fragmented.
- The logfile now shows the date only once at the top of the file, no loner on
every line.
- Fixed a bug for the "-l" commandline option that specifies a different location
for the logfile, where the Windows version of the program would create a
logfile at the default location containing only 1 line with "Starting, please
wait...".
- Changed the screensaver's "Do not defrag if last run was less than" radio
buttons into a pull-down list.
- Fixed a bug in the screensaver wrapper that made the preview window very slow.
- Fixed a bug in the screensaver wrapper that prevented screensaver with a space
in their filename to run.
- Added code to the screensaver to prevent multiple copies running simultaneously.
- Added more code to the screensaver so it will not include itself in the list
of alternate screensavers.
- Fixed a bug that would display the wrong name for screensavers that do not
have a name.
- Removed the "2003" check when listing screensavers, the wrapper makes it
possible to use non-standard screensavers.
- Added a test to quickly stop optimizing when there is nothing more to do.
- Enlarged a buffer to speed up the fragment analyzation.
- Small change in the code that reduces the number of fragments in huge files
that cannot be fully defragmented.
- Changed the debug level of the "FSCTL_GET_RETRIEVAL_POINTERS error: Infinite
loop" from zero to 2, so it won't always be displayed.
- Changed the debug level of the "Skipping gap, cannot fill: %I64d[%I64d]"
from 3 to 5.
Changes in the DLL library:
- 2 extra parameters in the RunDefrag() call.
JkDefrag v3.6 (Jan 20, 2007)
Changes:
- Added a wrapper program to the screensaver. The alternate screensaver would not start for some users and this will hopefully fix the problem.
- Action 5 "Force together" added. This mode will move all files to the beginning of the disk, even if it means fragmenting them. It fills all the gaps with fragments taken from the highest files.
- A change in the code that determines if a file is fragmented, to reduce the number of files that are uneccesarily moved.
- Debug mode 5 has been split into mode 5 "Detailed gap-filling messages" and mode 6 "Detailed gap-finding messages".
- Fixed a bug that caused a logfile to be created with a single line of text (the version info) when the "-l" commandline option was used.
JkDefrag v3.5 (Jan 07, 2007)
Changes:
- Different method of starting the alternate screensaver, in the hope it will work for more users.
- Added the "%SystemRoot%" folder to scan for screensavers.
- Added a "2003" test to filter out non-standard screensavers.
- Added zero to the choices in the "do not defrag if last run was less than ... hours ago" in the screensaver configuration window.
- Bugfix: if more than one disk was specified on the commandline, and the program was stopped by the user during any but the last disk, then the program would close the window, finish the current file, and start processing the next disk in the background. It will now close the window and finish the current file.
- Different method for determining the LCN of a file, in the hope it will fix a looping problem with compressed files during optimization.
- Made a change in the method used to defragment huge files to reduce the number of midway fails, and make it faster.
- Added debug level 6 for detailed gap-finding messages.
- The "Analyzing disk", "Starting defragmenter for", and "Finished" messages are now written to the logfile.
- For DLL users: Added a parameter to the ShowMove() callback.
- For DLL users: extra message 46.
JkDefrag v3.4 (Dec 25, 2006)
Changes:
- The screensaver now has several settings. You can specify commandline options just like with the other versions, so you can control which disks will be defragged; you can specify another screensaver to run when JkDefrag has finished; and you can select a number of hours to wait before running again.
- The screensaver now writes all the messages to a logfile, just like the other versions.
- Added a bit of code that will find fragmented files at the end of a gap. It's not really necessary but makes certain warnings a bit less confusing.
JkDefrag v3.3 (Dec 15, 2006)
Changes:
- Bugfix for the X64 versions. The program ran but couldn't find any files and therefore didn't do any work. I wish I had an X64 system to test new versions on! Anyone care to donate a computer?
- Added a couple more files to the internal dollar-list of special system files.
JkDefrag v3.2 (Dec 13, 2006)
Changes:
- Fixed a bug in the DLL that caused the name of the RunDefrag() subroutine to be mangled.
- The distributions now include a 'doc' directory with a copy of the JkDefrag homepage.
- Moved the .bat file to compile the X64 version to the main directory.
- Small change in the code that rewrites input paths.
- Suppressed "could not get volume bitmap" message at the end of the optimization phase.
JkDefrag v3.1 (Dec 08, 2006)
when running the program, "3.0" still appears at the top of the window.
Only the version string was incorrect.
JkDefrag v3.1 (Dec 07, 2006)
Changes:
- Managed to compile the screensaver and the DLL for X64.
- Fixed a divide-by-zero error when the window is minimized.
- Added a bit of code to get backup permissions, to gain access to special system files and folders such as the "System Volume Information" folder.
- Added a maximum-loop counter to the code that finds out the size and location of file fragments, as a preventative measure for a suspected bug in the Windows defragmentation API.
- The dollar special system files (such as "$Mft") are no longer analysed when the user has specified a file or a folder on the commandline, but only for full disks.
JkDefrag v3.0 (Dec 03, 2006)
Changes between version 2.27a and version 3.0:
- I've changed the name from plain old "defrag" into "JkDefrag". The old name was really no name at all and made talking about it a little bit awkward. The "jk" are my initials. The change in name is reflected in the names of the executables and the sources, for example "windefrag.exe" is now "JkDefrag.exe".
- The program and it's sources are now released under the GNU General Public License, and the DLL library under the GNU Lesser general public license. Previously the program was copyrighted freeware with published sources.
- New to this release is the screen saver. You can use it just like any other screensaver, go to lunch and come back to a fully optimized harddisk.
- Big changes in the DLL to give programmers access to a lot more data and to make the library completely thread-safe. The new library is not downwards compatible, although the structure and calls resemble the old library.
Changes in the Windows version:
- Name changed from "windefrag.exe" into "JkDefrag.exe".
- Starts in a resizable window instead of full screen.
- Shows a percentage counter of how much is left to do.
Changes in the commandline version:
- Name changed from "defrag.exe" into "JkDefragCmd.exe".
- Prints a small report with some numbers when it has finished processing a disk. The windows version saves the report in the logfile, but does not show the numbers on the screen.
- Options are now processed before processing items.
- Ultra long paths are now supported. Previously the program was limited to a maximum pathlength of 259 characters, as advised by Microsoft, but there are cases where pathnames can grow longer than that. Most Microsoft programs cannot handle ultra long paths.
- Switched to Unicode wide-character strings and system calls for filenames and paths, instead of 8-bit ANSI.
- Replaced the commandline options "o", "o1", and "o2" with the "a" options. It is now possible to run the defragger in analyze-only mode.
- It is now possible to specify individual files on the commandline.
- It is now possible to defragment/optimize unmounted volumes by specifying them explicitly on the commandline.
- Changed the way invisible system files are colorized.
- Invisible system files can now be defragged/optimized when the utility is started from a read-only medium such as cd-rom.
- Fixed a bug that could cause the program to loop when moving files using strategy 2.
- Moved the already-running test from the library to the individual programs, so that the library can now process multiple disks simultaneaously.
Defrag version 2.27 (Nov 16, 2006)
Changes:
- I have upgraded from "Microsoft Visual C++ Toolkit 2003" to "Visual C++ 2005 Express Edition", and from "Microsoft Platform SDK for Windows Server 2003 SP1" to "Microsoft Platform SDK for Windows Server 2003 R2". It required some minor changes in the sources.
- I've included a small "make.bat" in the sources to compile the defragger, and a "x64/make.bat" to compile the x64 versions.
Defrag version 2.27b (Nov 22, 2006)
This is an in-between maintenance release to fix a compilation bug in the X64 executables.
No changes in the regular Windows binaries, and 1 character changed in the sources.
Defrag version 2.26 (Nov 07, 2006)
Changes:
- The defragger can now partially defragment. When it encounters a huge file for which there is no gap big enough, then it will defragment as much of the file as it can. Previously it would just skip the file.
- Added a commandline option "-s" to slow down the defragger.
- The program will now refuse to start if another instance is already running.
Defrag version 2.25 (Oct 23, 2006)
Changes:
- Rewritten the code that draws (colorizes) files on the screen.
- Reorganised the debug messages.
- Fixed a bug that could cause the program to hang on startup.
- Changes that prepare for future partial defrag of huge files.
- Different strategy to retry moving a file.
- Went back to freespace and MFT optimization of version 2.23.
Defrag version 2.24 (Oct 13, 2006)
Changes:
- Further improvements in the algorithms to optimize the directories, the scratch-area, and the files in the MFT-zone.